带你使用opencv+dnn+yolov3识别物体 | 您所在的位置:网站首页 › yolov3 tiny opencv › 带你使用opencv+dnn+yolov3识别物体 |
该文为转载文章,原文出处https://blog.csdn.net/qq21497936/article/details/109201809 前言 级联分类器的效果并不是很好,准确度相对深度学习较低,上一章节使用了dnn中的tensorflow,本章使用yolov3模型,识别出具体的分类。 Demo 320x320,置信度0.6 yolov3模型下载 OpenCV深度识别基本流程 opencv3.4.x支持了各种模型。 支持的模型opencv3.4.x支持一下深度学习的模型:- caffe:.caffemodel 官网:http://caffe.berkeleyvision.org- tensorflow:.pb 官网:https://www.tensorflow.org- torch:.t7 | .net 官网:http://torch.ch- darknet:.weights 官网:https://pjreddie.com/darknet- DLDT:.bin 官网:https://software.intel.com/openvino-toolkit 操作步骤:yolov3不同深度学习框架产生的模型,在操作上和数据输出上有一些区别。梳理下opencv使用tensorflow训练好的模型的使用步骤。 步骤一:读取分类文件模型文件对应了不同的分类文件,分类文件是以行为标识,所在的行数(0开始),就是最终识别出的分类号的第几个分类。 std::string classesFile = "E:/qtProject/openCVDemo/dnnData/" \ "yolov3/coco.names"; // 读入分类名称,存入缓存 std::ifstream ifs(classesFile); std::vector classes; std::string classLine; while(std::getline(ifs, classLine)) { classes.push_back(classLine); } 步骤二:加载模型和配置文件,建立神经网络。根据不同的模型,使用cv::dnn::readNetFromXXX系列函数进行读取,opencv3.4.x系列支持的dnn模型(支持模型往上看)。 yolov3模型如下: std::string modelWeights = "E:/qtProject/openCVDemo/dnnData/" \ "yolov3/yolov3.weights"; std::string modelCfg = "E:/qtProject/openCVDemo/dnnData/" \ "yolov3/yolov3.cfg"; // 加载yolov3模型 cv::dnn::Net net = cv::dnn::readNetFromDarknet(modelCfg, modelWeights); if(net.empty()) { qDebug() |
CopyRight 2018-2019 实验室设备网 版权所有 |